@取基准值 = @【#集，#起，#止】｛
    #中位 = @转整数【（#起+#止）/ 2】
    #数1 = #集#起
    #数2 = #集#中位
    #数3 = #集#止
    如果 （#数1 大于等于 #数2 且 #数1 小于等于 #数3）或（#数1 大于等于 #数3 且 #数1 小于等于 #数2）｛
        返回 【#起，#数1】
    ｝
    如果 （#数2 大于等于 #数1 且 #数2 小于等于 #数3）或（#数2 大于等于 #数3 且 #数2 小于等于 #数1）｛
        返回 【#中位，#数2】
    ｝
    如果 （#数3 大于等于 #数1 且 #数3 小于等于 #数2）或（#数3 大于等于 #数2 且 #数3 小于等于 #数1）｛
        返回 【#止，#数3】
    ｝
｝

@交换 = @【#集，#位1，#位2】｛
    #临时 = #集#位1
    #集#位1 = #集#位2
    #集#位2 = #临时
｝

@递归快排 = @【#集，#起，#止】｛
    如果 #起 小于 0 或 #止 大于等于 @取长度、#集 或 #起 小于等于 #止 ｛返回 #集｝
    
    #基准 = @取基准值【#集，#起，#止】
    @交换【#集，#基准#0，#止】
    
    #低 = #起
    #高 = #止-1
    当 真 ｛
        当 #集#低 小于 #基准#1 且 #低 小于 #止｛#低 自加 1｝
        当 #集#高 大于 #基准#1 且 #高 大于 #起｛#高 自减 1｝
        如果 #低 小于 #高 ｛
            @交换【#集，#低，#高】
        ｝否则｛
            @交换【#集，#低，#止】
            跳出
        ｝
    ｝
    如果 #低-1 大于 #起 ｛
       @递归快排【#集，#起，#低-1】
    ｝
    如果 #低+1 小于 #止 ｛
        @递归快排【#集，#低+1，#止】
    ｝
    返回 #集
｝

@快速排序 = @【#集】｛
    #集合长 = @取长度、#集
    @递归快排【#集，0，#集合长-1】
｝

@显示、@快速排序、【7,5,8,1,3,4,2,0,9,6】






